package com.wtwd.campus.dao;

import com.wtwd.campus.entity.H5Customer;
import com.wtwd.campus.entity.H5User;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Author ldaoliang
 * @Date create in 14:29 2021/7/16
 * @Description
 */
@Mapper
public interface H5Mapper {

    /**
     * 根据appKey查询H5客户
     *
     * @param appKey
     * @return
     */
    H5Customer getH5CustomerByAppKey(String appKey);

    /**
     * 根据客户id和用户id查询h5用户
     *
     * @param h5Id
     * @param userId
     * @return
     */
    H5User getH5UserByCustomerIdAndUserId(@Param("customerId") Integer h5Id, @Param("userId") String userId);

    /**
     * 添加h5用户
     *
     * @param h5User
     * @return
     */
    int addH5User(H5User h5User);

    /**
     * 获取H5用户绑定的设备
     *
     * @param h5UserId
     * @return
     */
    @MapKey("device_id")
    List<Integer> getH5DeviceList(@Param("h5UserId") Integer h5UserId);

    /**
     * 获取h5用户设备列表
     *
     * @param h5UserId
     * @return
     */
    @MapKey("device_id")
    List<Map<String, Object>> getH5UserDeviceList(@Param("h5UserId") Integer h5UserId);

    /**
     * 添加绑定
     *
     * @param deviceId
     * @param h5UserId
     * @param studentName
     * @return
     */
    int addBind(@Param("deviceId") Integer deviceId, @Param("h5UserId") Integer h5UserId, @Param("studentName") String studentName);

    /**
     * 解绑
     *
     * @param deviceId
     * @param h5UserId
     * @return
     */
    int unbindDevice(@Param("deviceId") Integer deviceId, @Param("h5UserId") Integer h5UserId);

    /**
     * @param userId
     * @return
     */
    Integer getCusIdByUserId(Integer userId);

    /**
     * 根据客户id获取h5客户的使用权限时间
     *
     * @param cusId
     * @return
     */
    Long getCusTimeByCusId(Integer cusId);

    String getAppKeyBuCusId(@Param("cusId") Integer cusId);

    /**
     * 修改手机号码
     *
     * @param deviceId
     * @param phone
     * @return
     */
    int modifyPhoneByDeviceId(@Param("deviceId") Integer deviceId, @Param("phone") String phone);

    /**
     * 根据设备id解绑设备
     *
     * @param deviceId
     * @return
     */
    Integer unbindDeviceByDevice(Integer deviceId);

    /**
     * 解绑用户所有设备
     *
     * @param userId
     * @return
     */
    Integer unbindDeviceByUserId(@Param("userId") Integer userId);

    /**
     * 根据主键id获取H5用户
     * @param h5UserId
     * @return
     */
    H5User getH5UserById(@Param("h5UserId") Integer h5UserId);
}
